#ifndef RGBTOBMP_H_
#define RGBTOBMP_H_

#ifdef __cplusplus
extern "C" {
#endif

typedef unsigned short  WORD;
typedef unsigned long   DWORD;
typedef long            LONG;

typedef struct tagBITMAPFILEHEADER {    // bmfh
    WORD    bfType;                     // 文件标识‘BM’
    DWORD   bfSize;                     // 用字节表示的整个文件的大小
    WORD    bfReserved1;                // 保留字节，为0
    WORD    bfReserved2;                // 保留字节，为0
    DWORD   bfOffBits;                  // 图象数据RGBA的起始地址的偏移值  为54
} BITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{     // bmih
    DWORD   biSize;                     // 位图信息头(Bitmap Info Header)的长度,为40
    LONG    biWidth;                    // 位图的宽度，以象素为单位
    LONG    biHeight;                   // 位图的高度，以象素为单位
    WORD    biPlanes;                   // 位图的位面数（注：该值将总是1）
    WORD    biBitCount;                 // 每个象素的位数，设为24(表示24Bit位图)
    DWORD   biCompression;              // 压缩说明，设为0(不压缩)
    DWORD   biSizeImage;                // 用字节数表示的位图数据的大小（该数必须是4的倍数）
    LONG    biXPelsPerMeter;            // 用象素/米表示的水平分辨率(一般设为0)
    LONG    biYPelsPerMeter;            // 用象素/米表示的垂直分辨率(一般设为0)
    DWORD   biClrUsed;                  // 位图使用的颜色数(一般设为0)
    DWORD   biClrImportant;             // 指定重要的颜色数(一般设为0)
} BITMAPINFOHEADER;

extern void save_rgb565_to_bmpfile(unsigned char *rgbdata, int width, int height, char *FileName);
extern int save_rgb565_to_bmpmem(unsigned char *rgbdata, int width, int height, char *mem);

#ifdef __cplusplus
}
#endif
#endif /* RGBTOBMP_H_ */
